import {getGoodsDetail} from '../../api/api.js'
import {getStoreInfo} from '../../api/api.js'
import { getStoreMain} from '../../api/api.js'
import { addToCart} from '../../api/api.js'
import { collectStore } from '../../api/api.js'
import { isCollect } from '../../api/api.js'
import { cancelCollectStore } from '../../api/api.js'
/**
 * 1 这个页面的逻辑是，上个页面传递过来商品id 
 * 2 查出商品信息
 * 3 商品信息中获取到商家id
 * 4 然后产出商家信息。
 * 
 * 
 * 1 参数面板上面使用的是选中的某一个商品的价格
 * 2 详情页面的价格是minPrice
 * 
//  
 * **/ 

Page({
  /**
   * 页面的初始数据
   */
  data: {
    x:0,
    y:0,
     imgUrls:[
        
     ],
      // 商品数量的选择
     goodsNum:1,
      //控制弹出框要不要显示
     isShowPanel:false,
      //  区别是购物车还是购买
     tapType:'',
      //解析出的商品详情数据
     goodDetail:{},
      //解析出的店铺信息数据
     storeDetail:{},
      //解析触底商品详细图片
     detailImg:[],
      //用来存放规格的
     attr:[],
      //用来存放被选中的规格
     selectedAttr:[],
      // 是不是已经收藏了这个店铺
     isCollect:false,
     collectGood:false,
     id:0,
     goodsBulkSales:[],
     bigVideo:false,
     autoplay:false 
      
  },

  playEnd(){
     console.log("视频播放完成------");
     this.setData({
       autoplay:true,
     })
  },

   //改变swipper
   changeSwipper(item){
    console.log(item,"改变swipper--------");
     //  暂停播放视频
     this.videoContext.pause();
    //  return;
   },

  // 滚动事件
  scroll(e){
      console.log(e.detail.scrollTop,"滚动事件---------------")
      let top = e.detail.scrollTop;
      if(top>500){
          //停止视频播放
          this.videoContext.pause();
      }

  },

  // 
  toChat(e){
       console.log("根据一些信息，跳转到聊天窗口，然后连接聊天服务器");
       let id = this.data.goodDetail.merchantId;
       let time =new Date().getTime();
       wx.navigateTo({
          url:'/pages/chat/chat?merchantId='+id+'&time='+time,
       })
        //wx.navigateTo({
        //   url: '/pages/chat/chat?merchantId='+this.data.id,
        //})
  },


  toRecommend(){
     let data = {
        goodsId:this.data.goodDetail.goodsId,
        merchantId:this.data.goodDetail.merchantId
     }
     data = JSON.stringify(data);
     console.log(data,"-----去评论页面")
      wx.navigateTo({
        url:'/pages/evaluateList/evaluateList?data='+data,
      })
  },

  

  exitBigVideo(){
      this.setData({
          bigVideo:!this.data.bigVideo
      })
  },



  
//如果点击的是购买，那么直接在这里跳转到支付页面准备支付
toPayPage(){
    let goodsAmount = this.data.goodsNum;
    if(goodsAmount<1){
        wx.showToast({
          title:'您什么都没有买哦',
          icon:'none'
        })
        return;
    }
    let data = [];
      //需要传递给下个页面的数据 
      //获取商品信息
    let goodsDetail= this.data.goodDetail;
    //获取选中的规格信息
    let selectedAttr = this.data.selectedAttr;
    //获取商品价格
    let goodsPrice = selectedAttr.goodsPrice;
    // 获取specName
    // 这个选中的specname 为了方便渲染，已经把格式处理好了
    // 可以直接使用了
    let specName = selectedAttr.specName;
    let specId = selectedAttr.id;
    // 把specName 放进goodsDetail 里面
    goodsDetail.specName = specName;
    goodsDetail.specId = specId;
    // 把当前规格的价格放进goodsdetail 里面
    goodsDetail.goodsPrice = goodsPrice;
    goodsDetail.goodsAmount = goodsAmount;
    // 获取店铺的信息
    let store = this.data.storeDetail;
    let storeName = store.storeName;
    let goodsList = [];
    // 把goodsDetail 放进goodsList 里面
    goodsList.push(goodsDetail);
    data.push({
         store:storeName,
         goodsList
    });



    console.log(data);
    data = JSON.stringify(data);

    wx.navigateTo({
      url:'/pages/pay/pay?data='+data+"&flag=detail",
    })
},



  onLoad: function (options) {

  },



  onReady: function () {
    this.videoContext = wx.createVideoContext('myVideo')
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function (){
    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1];
    const options = currentPage.options;
    console.log(options,"触发onshow事件");
    //如果id没有改变的话没有必要重新加载
  
    if(this.data.id == options.id){
       return;
    }
    // 保存id
    this.setData({
       id:options.id
    })

    getGoodsDetail(options.id).then(res=>{
      console.log(res,"获取商品详情");
      if(res.data.code != 200){
            wx.showToast({
              title:"系统错误",
              icon:'none'
            })
      }
      //解析出slider
      console.log(res.data.data.goodsSlideshow,"goodsslideshow");
      this.parseImg(res.data.data.goodsSlideshow);
      //解析出轮播图
      //this.parseGoodSlideShow(imgUrls);

      //解析出及详情图
      this.parseDetailImg(res.data.data.goodsDetails);

      //console.log("detailImg-------------",detailImg)
      //保存goodDetail
      console.log(res.data.data,"==================goodsDetail---")
      this.setData({
        goodDetail:res.data.data
      })

      // this.parseAttr(res.data.data.goodsSpecificationList);
      // 这个是解析规格的
      this.parseAttr2(res.data.data.goodsSpecificationList);
      //获取成功之后获取商家信息
      this.getStoreInfo(res);
      this.isCollectStore();
      //查询是不是已经收藏了这件商品
      this.isCollectGoods();
        // 计算折扣后的价格
      this.parseGoodsBulkSalesObj()



    })
  },

 


  // 把折扣信息拿出来，计算打折后的价格，并且保留两位小数，然后放进另外的一个数组里面
  parseGoodsBulkSalesObj(){
      let data =this.data.goodDetail;
      let goodsBulkSalesObj = data.goodsBulkSalesObj;
      goodsBulkSalesObj.forEach(item=>{
          console.log(item,'--------');
      }) 
  },



  /**
   * 关于收藏和取消收藏
   * 1 判断的时候如果收藏了那么返回 id
   *   如果没有收藏返回 false
   * 2 收藏商品成功返回id
   * 3 取消成功返回 “操作成功”
   * **/ 

collectGoods(){
    console.log("收藏商品");

    if(!wx.getStorageSync('loginInfo').openid){
      wx.showToast({
        title: '您还没有登录哦！',
        icon:"none"
      })

      return;
   }


    let goodsDetail = this.data.goodDetail;
    console.log(goodsDetail.minPrice,"-------");
    if(this.data.collectGood){
        let data = {
            openId:wx.getStorageSync('loginInfo').openid,
            id: this.data.collectGood,
            merchantId: this.data.goodDetail.merchantId
        }
        console.log(data,"取消收藏参数")
        // 取消收藏
       cancelCollectStore(data).then(res=>{
            console.log(res);
            if(res.data.code == 200){
              this.setData({
                collectGood:false
              })
            }
       }) 
    }else{
        // 收藏
        let data = {
            openId:wx.getStorageSync('loginInfo').openid,
            goodsId: this.data.goodDetail.goodsId,
            merchantId: this.data.goodDetail.merchantId,
            favoritePrice:goodsDetail.minPrice
        }

        console.log(data);
        
        //藏商品
        collectStore(data).then(res=>{
             this.setData({
                collectGood:res.data.data
             })
             console.log(res);
        })
    }
},


  // 获取是不是已经收藏了这件商品
  isCollectGoods(){
        let collect = {
          openId: wx.getStorageSync('loginInfo').openid,
          goodsId:this.data.goodDetail.goodsId,  //商家id
          merchantId: this.data.goodDetail.merchantId,  //商家id
          time:Date.parse(new Date())
        }
      isCollect(collect).then(res=>{
          console.log(res,'是不是收藏了这件商品');
           this.setData({
              collectGood:res.data.data
           })
      })
  },

  



  parseAttr2(data){
    // 判断规格信息是不是存在，如果存在的话是不是null
     if(data==undefined||data.length<1){
        //  给已选的规格信息的值设置为 []
        this.setData({
            attr:[],
            selectedAttr:[]
        })

        return;
     }

     data.forEach(item=>{
        let specName = item.specName;
        specName = JSON.parse(specName);
        let sn = [];
        for(let i in specName){
            sn.push(specName[i])
        }
        item.specName = sn;
        this.setData({
          // 这个是解析出来的所有的规格信息
           attr:data,
          // 给一个默认选中商品
          selectedAttr:data[0]
        })
     })
     console.log(data);
  },

  
  // 解析出数据中的图片
  parseImg(data){
       let imgs = data.split(',');
       //console.log("--------------")
       this.setData({
          imgUrls:imgs
       })
  },


  parseDetailImg(data){
    let imgs = data.split(',');
    console.log("详情图--------------",imgs)
    //goodsDetails
    this.setData({
      detailImg:imgs
    })
  },
 

//立即购买
// 修改商品数量的按钮
changeNum(e){

  let selectedAttr = this.data.selectedAttr;
  let goodsNum = e.detail;
  console.log(goodsNum,"选择的商品数量-------------------")
  if (goodsNum >= selectedAttr.goodsStock){
        wx.showToast({
          title: '库存不足了哦',
          icon:'none'
        })
        
        return;
   }
  
  this.setData({
    goodsNum,
  })

// ------------------------------
  //  //判断当前的库存是不是足够
  //  // 获取到当前选中的商品，判断库存
  //  let mark = e.currentTarget.dataset.mark;
  // // console.log(e.currentTarget.dataset.mark) 
  //  if(mark == '-'){
  //     console.log(11);
  //     if(this.data.goodsNum ==  0)return;
  //     this.setData({
  //        goodsNum:--this.data.goodsNum
  //     })
  //  }else{
  //     //如果是增加商品那么要判断购买的数量和库存的数量的关系
      
  //  }
},



// 获取商家信息
getStoreInfo(res){
  getStoreInfo(res.data.data.merchantId).then(res => {
    console.log(res);
    if (res.data.code === 200) {
      this.setData({
        storeDetail: res.data.data
      })
    } else {
      wx.showToast({
        title: res.data.msg,
        icon: 'none'
      })
    }
  })
},



// 关闭弹出框,并且初始化弹出框数据

close(){
   this.setData({
     isShowPanel:false,
     goodsNum:1
     
   })
},



//参数面板的ok按钮
ok(){
  console.log(11);
  this.setData({
    isShowPanel:false
  })
  if(this.data.tapType == 'cart'){
    console.log("加入购物车");
    this.addToCart();
  }else{
    console.log("购买")
    // 调用支付接口
    this.toPayPage();
  }
},






addToCart(){
    console.log("1111");
    //规格id
    let specId = this.data.selectedAttr.id;
    // 商品id
    let goodId = this.data.goodDetail.goodsId;
    // openId 
    let openId = wx.getStorageSync("loginInfo").openid;
    // 商家id
    let merchantId = this.data.goodDetail.merchantId;
    // 商品数量
    let num = this.data.goodsNum;
    // 判断数量
    // 如果库存不足不可能选到数量
    // 如果没有选中超过1件的数量，那么不可能加入购物车
    if(num < 1){
        wx.showToast({
          title: '您什么都没有选哦',
          icon:"none"
        })
        return;
    }
    
    let data = {
      goodsId:goodId,//商品id
      specId:specId, //规格id
      openId:openId, //微信用户只一标识
      merchantId:merchantId,//商家id
      goodsAmount:num,//商品数量
    }

    console.log(data);

    // 发送请求
    addToCart(data).then(res=>{
       console.log(res)
       if(res.statusCode == 200){
           wx.showToast({
             title:res.data.msg,
           })
       }else{
         wx.showToast({
           title:'网络错误，请重试',
           icon:'none'
         })
       }
    })
    this.close();
},



  //点击加入购物车按钮，打开弹出框
  toCart() {
    // 暂停播放视频
    this.videoContext.pause();
    //判断是不是登录了
    let openId = wx.getStorageSync('loginInfo').openid;
    if(!openId){
        wx.showToast({
          title: '您还没有登录哦！',
          icon:"none"
        })
        return;
    }



    // 打开参数面板
    this.setData({
      isShowPanel: true,
      tapType: 'cart'
    })
  },

// 点击购买按钮，打开弹出框
  toBuy() {
    // 暂停播放视频
    this.videoContext.pause();

    //判断是不是登录了
    let openId = wx.getStorageSync('loginInfo').openid;
    if(!openId){
        wx.showToast({
          title: '您还没有登录哦！',
          icon:"none"
        })

        return;
    }

    console.log("购买");
    // 打开参数面板
    this.setData({
      isShowPanel: true,
      tapType: 'buy'
    })
  },




//每次在切换规格的时候都要把商品的数量归0
selectAttr(e){
  console.log(e.currentTarget.dataset.idx);
  let index = e.currentTarget.dataset.idx;
  let attr1 = this.data.attr[index];
  
 

  //如果库存不足，那么弹出一个提示
  if(attr1.goodsStock<1){
      wx.showToast({
        title:'库存不足了哦',
        icon:'none'
      })
      return;
  }

  this.setData({
    selectedAttr:attr1,
    goodsNum:1
  })

  console.log(this.data.selectedAttr);
},

  goStore(){
    // let data = {
    //   pageSize:10,
    //   pageNum:1
    // }

    let id = this.data.goodDetail.merchantId;
    console.log(id);

    wx.navigateTo({
      url: '/pages/shop/shop?id='+id,
    })

    console.log(11111)
  },


// 收藏店铺
/***
 * 1 查询收藏 如果收藏返回一个id， 没有返回一个false
 * 2 点击收藏 不需要 id 
 * 3 取消收藏 需要传递一个id
 * 
 * 
 * 
 * **/ 

 isCollectStore(){
   //  请求成功之后获取是不是已经收藏了这个店铺
   let collect = {
     openId: wx.getStorageSync('loginInfo').openid,
     merchantId: this.data.goodDetail.merchantId  //商家id
   }


   isCollect(collect).then(res => {
     console.log(res, '是不是收藏了这个店铺');
     // 如果已经收藏了那么返回id
     // 如果没有收藏返回false
     this.setData({
       isCollect: res.data.data
     })
   }) 

 },


   collectStore(){
     if(!wx.getStorageSync('loginInfo').openid){
        wx.showToast({
          title: '您还没有登录哦！',
          icon:"none"
        })

        return;
     }


    let data = {
      openId:wx.getStorageSync('loginInfo').openid,
      merchantId: this.data.goodDetail.merchantId
      //goodsId:this.data.goodDetail.goodsId,
      //favoritePrice: this.data.goodDetail.minPrice
    }
    // 发送请求
      collectStore(data).then(res=>{
         console.log(res);
         if(res.data.code == 200){
            wx.showToast({
              title: '收藏成功',
            })
         }else{
             wx.showToast({
               title:res.data.msg,
               icon:'none'
             })
         }
        //  设置收藏按钮的样式
         this.setData({
            isCollect: res.data.data
         })
      })
   },

   

// 取消收藏商店
   cancelCollectStore(){

    if(!wx.getStorageSync('loginInfo').openid){
      wx.showToast({
        title: '您还没有登录哦！',
        icon:"none"
      })

      return;
   }



    console.log("cancel")
     let id = this.data.isCollect;
     let data = {
        id:this.data.isCollect,
        openId:wx.getStorageSync('loginInfo').openid
     }
     cancelCollectStore(data).then(res=>{
          console.log(res);
          if(res.statusCode == 200){
            if (res.data.code == 200){
                 this.setData({
                    isCollect:false
                 })
            }

            wx.showToast({
              title:"取消成功",
            })
          }else{
              wx.showToast({
                title: "网络错误请重试....",
                icon:'none'
              })
          }
     })
  
  
  
  
   },
  



  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }




   // parseAttr(data) {
  //   // 两层for循环
  //   let attr = {};
  //   // 获取到这种格式的数据
  //   // let data = {key:[v1,v2,v3],ke2:[v2,v3,v4]}
  //   data.forEach(item => {
  //     // console.log(item.specName);
  //     let specName = item.specName;
  //     // 如果json 对象不能遍历，那么解析一下就可以遍历了。
  //     specName = JSON.parse(specName);
  //     // 遍历对象
  //     // 保存spaceName 

  //     for (let key in specName){
  //       // console.log(attr[key]+"---");
  //       if (attr[key]){
  //           //如果这个规格之前已经添加了
  //           console.log("规格已经存在了");
  //           attr[key].push(specName[key]);
  //       }else{
  //           //之前并没有添加这个规格，想在要在这个对象里面重新
  //           //添加一个新的规格，那么
  //         console.log("规格之前不存在")
  //         attr[key] = [];
  //       }
  //     }
  //   })
  //   // console.log(attr);

  //   // 对attr 的格式再次处理一次
  //   // 把上一种格式转换成这种格式
  //   // let data = [{
  //   //   title:'t',
  //   //   content:[1,1,1]
  //   // },{},{}]
  //   let attr2 = [];
  //   for(let key in attr){
  //       let i = {};
  //       i.title = key;
  //       i.content = attr[key];
  //       attr2.push(i);
  //   }
  //   // console.log(attr2);
  //    // 赋值
  //   this.setData({
  //     attr:attr2
  //   })
  // },



  // 检查参数数组是不是包含了当前的对象

  // 解析出商品规格
  //检查库存
  // checkStock(e) {
  //   console.log("检查库存");
  //   // 实现思路
  //   // 1 选中一个商品
  //   // 2 根据商品的 key（颜色）和value（红色） 过滤出
  //   //  颜色 是红色 的所以只，
  //   // 3 重新渲染这组数据
  //   //这个是一个属性值
  //   let value = e.currentTarget.dataset.ite;
  //   // 这个是一个key
  //   let key = e.currentTarget.dataset.title;

  //   //存放被选中的规格，如果已经选中那么，就把他从数组里面拿出来
  //   let selectedAttr = this.data.selectedAttr;
  //   console.log(selectedAttr.length+"长度");
  //   let result = selectedAttr.indexOf(value);
  //   console.log(result);
  //   if(result == -1){
  //       // 之前未选中这个属性
  //       selectedAttr.push(value);
  //   }else{
  //       selectedAttr.splice(result,1);
  //   }
  //   // 获取内存中的属性数组
  //   // 这是一个数组，数组里面有很多个对象
  //   let list = this.data.goodDetail.goodsSpecificationList;
  //   // console.log(list)
  //   // 遍历数组
  //   let list1 = list.filter(item => {
  //     //获取对象中的 specName
  //     let specName = JSON.parse(item.specName);
  //     // 根据specName 判断当前的对象要不要不留
  //     // console.log(specName[key])
  //     // console.log(value)
  //     return specName[key] == value;
  //   })
  //   // console.log(list1);
  //   //把当前的list1 重新改变格式渲染到页面上  
  //   this.parseAttr(list1);
  // },
  // 解析数据（解析商品规格）
  // 想要的数据结构
  // let data = [title:{},content:[{stock,},{},{}]]
  // parseAttr(data){
  //   // console.log(list)
  //   // 两层for循环
  //   let attr = {};
  //   // 获取到这种格式的数据
  //   // let data = {key:[v1,v2,v3],ke2:[v2,v3,v4]}
  //   data.forEach(item => {
  //     // console.log(item.specName);
  //     // 获取到这个item 对应的库存。
  //     let stock = item.goodsStock;
  //     let specName = item.specName;
  //     // 如果json 对象不能遍历，那么解析一下就可以遍历了。
  //     specName = JSON.parse(specName);

  //     // 遍历对象
  //     // 保存spaceName 

  //     for (let key in specName) {
  //       // console.log(attr[key]+"---");
  //       if (attr[key]) {
  //         //如果这个规格之前已经添加了
  //         console.log("规格已经存在了");
  //         attr[key].push({
  //            content:specName[key],
  //            stock,
  //         });
  //       } else {
  //         //之前并没有添加这个规格，想在要在这个对象里面重新
  //         //添加一个新的规格，那么
  //         console.log("规格之前不存在")
  //         attr[key] = [];
  //       }
  //     }
  //   })
  //   // 对attr 的格式再次处理一次
  //   // 把上一种格式转换成这种格式
  //   // let data = [{
  //   //   title:'t',
  //   //   content:[1,1,1]
  //   // },{},{}]
  //   let attr2 = [];
  //   for (let key in attr) {
  //     let i = {};
  //     i.title = key;
  //     i.content = attr[key];
  //     attr2.push(i);
  //   }
  //   // console.log(attr2);
  //   // 赋值
  //   this.setData({
  //     attr: attr2
  //   })

  //   console.log(attr2);
  // },

})